home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 228_01 / scrnmisc.c < prev    next >
Text File  |  1987-07-29  |  5KB  |  185 lines

  1. /*
  2. HEADER:         CUGXXX;
  3. TITLE:          (MS-DOS) System-independent sound generation;
  4. DATE:           10-30-84;
  5. DESCRIPTION:    System functions to set, move, and write to CRT;
  6. KEYWORDS:       Sound generation, system functions;
  7. FILENAME:       SCRNMISC.C;
  8. WARNINGS:       IBM-PC and close compatibles;
  9. AUTHORS:        Garth Kennedy;
  10. COMPILER:       Lattice C V2.12;
  11. REFERENCES:     US-DISK 1310;
  12. ENDREF
  13. */
  14. /**
  15. * These are functions written using the Lattice 2.12 compiler
  16. * that set, move and write to the CRT. Standard DOS Calls are
  17. * used. This is extracted from a larger program
  18. *
  19. * Garth Kennedy    Hinsdale, Ill  9 Nov 1984
  20. **/
  21.  
  22. #include "_main.c"
  23. int curpos[6];               /* cursor position array */
  24. /**
  25. * curpos[0] - text row,          curpos[3] - dot row
  26. * curpos[1] - text column         curpos[4] - dot column
  27. * curpos[2] - display page number    curpos[5] - dot color
  28. **/
  29.  
  30. /**
  31. * scrnclr()
  32. *
  33. * Clear screen      regardless of mode
  34. *
  35. * Garth Kennedy  29 Oct 1984
  36. **/
  37.  
  38. scrnclr()
  39. {
  40.     int intno = 0x10;         /* interrupt to VIDEO_IO */
  41.     union REGS inregs;         /* input regs */
  42.     union REGS outregs;      /* output regs */
  43.  
  44.     inregs.h.ah = 0x0F;      /* return current video state */
  45.     int86(intno,&inregs,&outregs);
  46.  
  47.     inregs.h.ah = 0x00;      /* set display mode */
  48.     inregs.h.al = outregs.h.al;    /* to current mode */
  49.  
  50.     int86(intno,&inregs,&outregs);
  51.  
  52.     return;
  53. }
  54. /**/
  55.  
  56. /**
  57. * scrnpos(x,y)
  58. *
  59. * Move the cursor the the row, column set by x,y
  60. *
  61. * Garth Kennedy  29 Oct 1984
  62. **/
  63.  
  64. scrnpos(x,y)
  65. int x;        /* row */
  66. int y;        /* column */
  67. {
  68.     int intno = 0x10;         /* interrupt to VIDEO_IO */
  69.     union REGS inregs;         /* input regs */
  70.     union REGS outregs;      /* output regs */
  71.  
  72.     inregs.h.ah = 0x02;      /* set cursor position */
  73.     inregs.h.dh = x;         /* row to go to */
  74.     inregs.h.dl = y;         /* column to go to */
  75.     inregs.h.bh = 0x00;      /* page 0 */
  76.  
  77.     int86(intno,&inregs,&outregs);
  78.  
  79.     return;
  80. }
  81. /**/
  82. /**
  83. *  scrnwhr(curpos)
  84. *
  85. * return position (row/column) and page number
  86. * curpos [0] - row, curpos[1] - column, curpos[2] - page number
  87. * curpos[3] - dot row , curpos[4] - dot column, curpos[5] - color
  88. * Garth Kennedy  30 Oct 1984
  89. **/
  90.  
  91. scrnwhr(curpos)
  92. int curpos[];
  93. {
  94.     int intno = 0x10;         /* interrupt to VIDEO_IO */
  95.     union REGS inregs;         /* input regs */
  96.     union REGS outregs;      /* output regs */
  97.  
  98.     inregs.h.ah = 0x0F;      /* return current video state */
  99.     int86(intno,&inregs,&outregs);
  100.     curpos[2] = outregs.h.bh;        /* current page */
  101.  
  102.     inregs.h.bh = outregs.h.bh;  /* move current page */
  103.     inregs.h.ah = 0x03;      /* read cursor position */
  104.     int86(intno,&inregs,&outregs);
  105.     curpos[0] = outregs.h.dh;         /* row */
  106.     curpos[1] = outregs.h.dl;         /* column */
  107.     return;
  108. }
  109. /**/
  110. /**
  111. * setcrt(al)
  112. *
  113. * Set the CRT display mode
  114. *  al = 0    40X25 BW Text     al = 4  320X200 Color Graphics
  115. *  al = 1    40X25 Color Text     al = 5  320X200 BW Graphics
  116. *  al = 2    80X25 BW Text     al = 6  640X200 BW Graphics
  117. *  al = 3    80X25 Color Text
  118. *
  119. * Garth Kennedy  9 Nov 1984
  120. **/
  121. setcrt(al)
  122. int al;
  123. {
  124.     int intno = 0x10;         /* interrupt to VIDEO_IO */
  125.     union REGS inregs;         /* input regs */
  126.     union REGS outregs;      /* output regs */
  127.  
  128.     inregs.h.ah = 0x00;      /* set display mode */
  129.     inregs.h.al = al;         /* to requested mode */
  130.  
  131.     int86(intno,&inregs,&outregs);
  132.  
  133.     return;
  134. }
  135. /**/
  136. /**
  137. * grfpos(dx,dy,l)
  138. *
  139. * position the graphics "cursor" and turn to dot at that point to
  140. * the color given by l.- dx - row, dy - column
  141. *  !!! This does nothing with the text cursor  !!!
  142. *  Garth Kennedy  9 Nov 1984
  143. **/
  144.  
  145. grfpos(dx,dy,l)
  146. int dx,dy,l;
  147. {
  148.     int intno = 0x10;         /* interrupt to VIDEO_IO */
  149.     union REGS inregs;         /* input regs */
  150.     union REGS outregs;      /* output regs */
  151.  
  152.     inregs.h.ah = 0x0C;      /* write dot */
  153.     inregs.x.dx = dx;         /* row to go to */
  154.     inregs.x.cx = dy;         /* column to go to */
  155.     inregs.h.al = l;         /* color value */
  156.  
  157.     int86(intno,&inregs,&outregs);
  158.  
  159.     return;
  160. }
  161.  
  162. /**
  163. *  grfwhr(curpos)
  164. *
  165. * return color given dot position (row/column)
  166. * curpos [0] - row, curpos[1] - column, curpos[2] - page number
  167. * curpos[3] - dot row , curpos[4] - dot column, curpos[5] - color
  168. * Garth Kennedy  9 Nov 1984
  169. **/
  170.  
  171. grfwhr(curpos)
  172. int curpos[];
  173. {
  174.     int intno = 0x10;         /* interrupt to VIDEO_IO */
  175.     union REGS inregs;         /* input regs */
  176.     union REGS outregs;      /* output regs */
  177.  
  178.     inregs.x.dx = curpos[3];     /* dot row */
  179.     inregs.x.cx = curpos[4];     /* dot column */
  180.     inregs.h.ah = 0x0D;      /* read dot color */
  181.     int86(intno,&inregs,&outregs);
  182.     curpos[5] = outregs.h.al;     /* pull out color of dot */
  183.     return;
  184. }
  185.